home *** CD-ROM | disk | FTP | other *** search
/ Power Hacker 2003 / Power_Hacker_2003.iso / Exploit and vulnerability / w00w00 / sectools / fragrouter / libpcap-0.4 / aclocal.m4 next >
Encoding:
M4 Source File  |  1999-07-26  |  18.5 KB  |  707 lines

  1. dnl @(#) $Header: /cvs/fragrouter/libpcap-0.4/aclocal.m4,v 1.1.1.1 1999/05/03 04:06:43 dugsong Exp $ (LBL)
  2. dnl
  3. dnl Copyright (c) 1995, 1996, 1997, 1998
  4. dnl    The Regents of the University of California.  All rights reserved.
  5. dnl
  6. dnl Redistribution and use in source and binary forms, with or without
  7. dnl modification, are permitted provided that: (1) source code distributions
  8. dnl retain the above copyright notice and this paragraph in its entirety, (2)
  9. dnl distributions including binary code include the above copyright notice and
  10. dnl this paragraph in its entirety in the documentation or other materials
  11. dnl provided with the distribution, and (3) all advertising materials mentioning
  12. dnl features or use of this software display the following acknowledgement:
  13. dnl ``This product includes software developed by the University of California,
  14. dnl Lawrence Berkeley Laboratory and its contributors.'' Neither the name of
  15. dnl the University nor the names of its contributors may be used to endorse
  16. dnl or promote products derived from this software without specific prior
  17. dnl written permission.
  18. dnl THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED
  19. dnl WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF
  20. dnl MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.
  21. dnl
  22. dnl LBL autoconf macros
  23. dnl
  24.  
  25. dnl
  26. dnl Determine which compiler we're using (cc or gcc)
  27. dnl If using gcc, determine the version number
  28. dnl If using cc, require that it support ansi prototypes
  29. dnl If using gcc, use -O2 (otherwise use -O)
  30. dnl If using cc, explicitly specify /usr/local/include
  31. dnl
  32. dnl usage:
  33. dnl
  34. dnl    AC_LBL_C_INIT(copt, incls)
  35. dnl
  36. dnl results:
  37. dnl
  38. dnl    $1 (copt set)
  39. dnl    $2 (incls set)
  40. dnl    CC
  41. dnl    LDFLAGS
  42. dnl    ac_cv_lbl_gcc_vers
  43. dnl    LBL_CFLAGS
  44. dnl
  45. AC_DEFUN(AC_LBL_C_INIT,
  46.     [AC_PREREQ(2.12)
  47.     AC_BEFORE([$0], [AC_PROG_CC])
  48.     AC_BEFORE([$0], [AC_LBL_FIXINCLUDES])
  49.     AC_BEFORE([$0], [AC_LBL_DEVEL])
  50.     AC_ARG_WITH(gcc, [  --without-gcc           don't use gcc])
  51.     $1="-O"
  52.     $2=""
  53.     if test "${srcdir}" != "." ; then
  54.         $2="-I\$\(srcdir\)"
  55.     fi
  56.     if test "${CFLAGS+set}" = set; then
  57.         LBL_CFLAGS="$CFLAGS"
  58.     fi
  59.     if test -z "$CC" ; then
  60.         case "$target_os" in
  61.  
  62.         bsdi*)
  63.             AC_CHECK_PROG(SHLICC2, shlicc2, yes, no)
  64.             if test $SHLICC2 = yes ; then
  65.                 CC=shlicc2
  66.                 export CC
  67.             fi
  68.             ;;
  69.         esac
  70.     fi
  71.     if test -z "$CC" -a "$with_gcc" = no ; then
  72.         CC=cc
  73.         export CC
  74.     fi
  75.     AC_PROG_CC
  76.     if test "$GCC" = yes ; then
  77.         if test "$SHLICC2" = yes ; then
  78.             ac_cv_lbl_gcc_vers=2
  79.             $1="-O2"
  80.         else
  81.             AC_MSG_CHECKING(gcc version)
  82.             AC_CACHE_VAL(ac_cv_lbl_gcc_vers,
  83.             ac_cv_lbl_gcc_vers=`$CC -v 2>&1 | \
  84.                 sed -e '/^gcc version /!d' \
  85.                 -e 's/^gcc version //' \
  86.                 -e 's/ .*//' -e 's/^[[[^0-9]]]*//' \
  87.                 -e 's/\..*//'`)
  88.             AC_MSG_RESULT($ac_cv_lbl_gcc_vers)
  89.             if test $ac_cv_lbl_gcc_vers -gt 1 ; then
  90.                 $1="-O2"
  91.             fi
  92.         fi
  93.     else
  94.         AC_MSG_CHECKING(that $CC handles ansi prototypes)
  95.         AC_CACHE_VAL(ac_cv_lbl_cc_ansi_prototypes,
  96.         AC_TRY_COMPILE(
  97.             [#include <sys/types.h>],
  98.             [int frob(int, char *)],
  99.             ac_cv_lbl_cc_ansi_prototypes=yes,
  100.             ac_cv_lbl_cc_ansi_prototypes=no))
  101.         AC_MSG_RESULT($ac_cv_lbl_cc_ansi_prototypes)
  102.         if test $ac_cv_lbl_cc_ansi_prototypes = no ; then
  103.             case "$target_os" in
  104.  
  105.             hpux*)
  106.                 AC_MSG_CHECKING(for HP-UX ansi compiler ($CC -Aa -D_HPUX_SOURCE))
  107.                 savedcflags="$CFLAGS"
  108.                 CFLAGS="-Aa -D_HPUX_SOURCE $CFLAGS"
  109.                 AC_CACHE_VAL(ac_cv_lbl_cc_hpux_cc_aa,
  110.                 AC_TRY_COMPILE(
  111.                     [#include <sys/types.h>],
  112.                     [int frob(int, char *)],
  113.                     ac_cv_lbl_cc_hpux_cc_aa=yes,
  114.                     ac_cv_lbl_cc_hpux_cc_aa=no))
  115.                 AC_MSG_RESULT($ac_cv_lbl_cc_hpux_cc_aa)
  116.                 if test $ac_cv_lbl_cc_hpux_cc_aa = no ; then
  117.                     AC_MSG_ERROR(see the INSTALL doc for more info)
  118.                 fi
  119.                 CFLAGS="$savedcflags"
  120.                 V_CCOPT="-Aa $V_CCOPT"
  121.                 AC_DEFINE(_HPUX_SOURCE)
  122.                 ;;
  123.  
  124.             *)
  125.                 AC_MSG_ERROR(see the INSTALL doc for more info)
  126.                 ;;
  127.             esac
  128.         fi
  129.         $2="$$2 -I/usr/local/include"
  130.         LDFLAGS="$LDFLAGS -L/usr/local/lib"
  131.  
  132.         case "$target_os" in
  133.  
  134.         irix*)
  135.             V_CCOPT="$V_CCOPT -xansi -signed -g3"
  136.             ;;
  137.  
  138.         osf*)
  139.             V_CCOPT="$V_CCOPT -std1 -g3"
  140.             ;;
  141.  
  142.         ultrix*)
  143.             AC_MSG_CHECKING(that Ultrix $CC hacks const in prototypes)
  144.             AC_CACHE_VAL(ac_cv_lbl_cc_const_proto,
  145.             AC_TRY_COMPILE(
  146.                 [#include <sys/types.h>],
  147.                 [struct a { int b; };
  148.                 void c(const struct a *)],
  149.                 ac_cv_lbl_cc_const_proto=yes,
  150.                 ac_cv_lbl_cc_const_proto=no))
  151.             AC_MSG_RESULT($ac_cv_lbl_cc_const_proto)
  152.             if test $ac_cv_lbl_cc_const_proto = no ; then
  153.                 AC_DEFINE(const,)
  154.             fi
  155.             ;;
  156.         esac
  157.     fi
  158. ])
  159.  
  160. dnl
  161. dnl Use pfopen.c if available and pfopen() not in standard libraries
  162. dnl Require libpcap
  163. dnl Look for libpcap in ..
  164. dnl Use the installed libpcap if there is no local version
  165. dnl
  166. dnl usage:
  167. dnl
  168. dnl    AC_LBL_LIBPCAP(pcapdep, incls)
  169. dnl
  170. dnl results:
  171. dnl
  172. dnl    $1 (pcapdep set)
  173. dnl    $2 (incls appended)
  174. dnl    LIBS
  175. dnl    LBL_LIBS
  176. dnl
  177. AC_DEFUN(AC_LBL_LIBPCAP,
  178.     [AC_REQUIRE([AC_LBL_LIBRARY_NET])
  179.     dnl
  180.     dnl save a copy before locating libpcap.a
  181.     dnl
  182.     LBL_LIBS="$LIBS"
  183.     pfopen=/usr/examples/packetfilter/pfopen.c
  184.     if test -f $pfopen ; then
  185.         AC_CHECK_FUNCS(pfopen)
  186.         if test $ac_cv_func_pfopen = "no" ; then
  187.             AC_MSG_RESULT(Using $pfopen)
  188.             LIBS="$LIBS $pfopen"
  189.         fi
  190.     fi
  191.     AC_MSG_CHECKING(for local pcap library)
  192.     libpcap=FAIL
  193.     lastdir=FAIL
  194.     places=`ls .. | sed -e 's,/$,,' -e 's,^,../,' | \
  195.     egrep '/libpcap-[[0-9]]*\.[[0-9]]*(\.[[0-9]]*)?([[ab]][[0-9]]*)?$'`
  196.     for dir in $places ../libpcap libpcap ; do
  197.         basedir=`echo $dir | sed -e 's/[[ab]][[0-9]]*$//'`
  198.         if test $lastdir = $basedir ; then
  199.             dnl skip alphas when an actual release is present
  200.             continue;
  201.         fi
  202.         lastdir=$dir
  203.         if test -r $dir/pcap.c ; then
  204.             libpcap=$dir/libpcap.a
  205.             d=$dir
  206.             dnl continue and select the last one that exists
  207.         fi
  208.     done
  209.     if test $libpcap = FAIL ; then
  210.         AC_MSG_RESULT(not found)
  211.         AC_CHECK_LIB(pcap, main, libpcap="-lpcap")
  212.         if test $libpcap = FAIL ; then
  213.             AC_MSG_ERROR(see the INSTALL doc for more info)
  214.         fi
  215.     else
  216.         $1=$libpcap
  217.         $2="-I$d $$2"
  218.         AC_MSG_RESULT($libpcap)
  219.     fi
  220.     LIBS="$libpcap $LIBS"
  221.     case "$target_os" in
  222.  
  223.     aix*)
  224.         pseexe="/lib/pse.exp"
  225.         AC_MSG_CHECKING(for $pseexe)
  226.         if test -f $pseexe ; then
  227.             AC_MSG_RESULT(yes)
  228.             LIBS="$LIBS -I:$pseexe"
  229.         fi
  230.         ;;
  231.     esac])
  232.  
  233. dnl
  234. dnl Define RETSIGTYPE and RETSIGVAL
  235. dnl
  236. dnl usage:
  237. dnl
  238. dnl    AC_LBL_TYPE_SIGNAL
  239. dnl
  240. dnl results:
  241. dnl
  242. dnl    RETSIGTYPE (defined)
  243. dnl    RETSIGVAL (defined)
  244. dnl
  245. AC_DEFUN(AC_LBL_TYPE_SIGNAL,
  246.     [AC_BEFORE([$0], [AC_LBL_LIBPCAP])
  247.     AC_TYPE_SIGNAL
  248.     if test "$ac_cv_type_signal" = void ; then
  249.         AC_DEFINE(RETSIGVAL,)
  250.     else
  251.         AC_DEFINE(RETSIGVAL,(0))
  252.     fi
  253.     case "$target_os" in
  254.  
  255.     irix*)
  256.         AC_DEFINE(_BSD_SIGNALS)
  257.         ;;
  258.  
  259.     *)
  260.         dnl prefer sigset() to sigaction()
  261.         AC_CHECK_FUNCS(sigset)
  262.         if test $ac_cv_func_sigset = no ; then
  263.             AC_CHECK_FUNCS(sigaction)
  264.         fi
  265.         ;;
  266.     esac])
  267.  
  268. dnl
  269. dnl If using gcc, make sure we have ANSI ioctl definitions
  270. dnl
  271. dnl usage:
  272. dnl
  273. dnl    AC_LBL_FIXINCLUDES
  274. dnl
  275. AC_DEFUN(AC_LBL_FIXINCLUDES,
  276.     [if test "$GCC" = yes ; then
  277.         AC_MSG_CHECKING(for ANSI ioctl definitions)
  278.         AC_CACHE_VAL(ac_cv_lbl_gcc_fixincludes,
  279.         AC_TRY_COMPILE(
  280.             [/*
  281.              * This generates a "duplicate case value" when fixincludes
  282.              * has not be run.
  283.              */
  284. #        include <sys/types.h>
  285. #        include <sys/time.h>
  286. #        include <sys/ioctl.h>
  287. #        ifdef HAVE_SYS_IOCCOM_H
  288. #        include <sys/ioccom.h>
  289. #        endif],
  290.             [switch (0) {
  291.             case _IO('A', 1):;
  292.             case _IO('B', 1):;
  293.             }],
  294.             ac_cv_lbl_gcc_fixincludes=yes,
  295.             ac_cv_lbl_gcc_fixincludes=no))
  296.         AC_MSG_RESULT($ac_cv_lbl_gcc_fixincludes)
  297.         if test $ac_cv_lbl_gcc_fixincludes = no ; then
  298.             # Don't cache failure
  299.             unset ac_cv_lbl_gcc_fixincludes
  300.             AC_MSG_ERROR(see the INSTALL for more info)
  301.         fi
  302.     fi])
  303.  
  304. dnl
  305. dnl Check for flex, default to lex
  306. dnl Require flex 2.4 or higher
  307. dnl Check for bison, default to yacc
  308. dnl Default to lex/yacc if both flex and bison are not available
  309. dnl Define the yy prefix string if using flex and bison
  310. dnl
  311. dnl usage:
  312. dnl
  313. dnl    AC_LBL_LEX_AND_YACC(lex, yacc, yyprefix)
  314. dnl
  315. dnl results:
  316. dnl
  317. dnl    $1 (lex set)
  318. dnl    $2 (yacc appended)
  319. dnl    $3 (optional flex and bison -P prefix)
  320. dnl
  321. AC_DEFUN(AC_LBL_LEX_AND_YACC,
  322.     [AC_ARG_WITH(flex, [  --without-flex          don't use flex])
  323.     AC_ARG_WITH(bison, [  --without-bison         don't use bison])
  324.     if test "$with_flex" = no ; then
  325.         $1=lex
  326.     else
  327.         AC_CHECK_PROGS($1, flex, lex)
  328.     fi
  329.     if test "$$1" = flex ; then
  330.         # The -V flag was added in 2.4
  331.         AC_MSG_CHECKING(for flex 2.4 or higher)
  332.         AC_CACHE_VAL(ac_cv_lbl_flex_v24,
  333.         if flex -V >/dev/null 2>&1; then
  334.             ac_cv_lbl_flex_v24=yes
  335.         else
  336.             ac_cv_lbl_flex_v24=no
  337.         fi)
  338.         AC_MSG_RESULT($ac_cv_lbl_flex_v24)
  339.         if test $ac_cv_lbl_flex_v24 = no ; then
  340.             s="2.4 or higher required"
  341.             AC_MSG_WARN(ignoring obsolete flex executable ($s))
  342.             $1=lex
  343.         fi
  344.     fi
  345.     if test "$with_bison" = no ; then
  346.         $2=yacc
  347.     else
  348.         AC_CHECK_PROGS($2, bison, yacc)
  349.     fi
  350.     if test "$$2" = bison ; then
  351.         $2="$$2 -y"
  352.     fi
  353.     if test "$$1" != lex -a "$$2" = yacc -o "$$1" = lex -a "$$2" != yacc ; then
  354.         AC_MSG_WARN(don't have both flex and bison; reverting to lex/yacc)
  355.         $1=lex
  356.         $2=yacc
  357.     fi
  358.     if test "$$1" = flex -a -n "$3" ; then
  359.         $1="$$1 -P$3"
  360.         $2="$$2 -p $3"
  361.     fi])
  362.  
  363. dnl
  364. dnl Checks to see if union wait is used with WEXITSTATUS()
  365. dnl
  366. dnl usage:
  367. dnl
  368. dnl    AC_LBL_UNION_WAIT
  369. dnl
  370. dnl results:
  371. dnl
  372. dnl    DECLWAITSTATUS (defined)
  373. dnl
  374. AC_DEFUN(AC_LBL_UNION_WAIT,
  375.     [AC_MSG_CHECKING(if union wait is used)
  376.     AC_CACHE_VAL(ac_cv_lbl_union_wait,
  377.     AC_TRY_COMPILE([
  378. #    include <sys/types.h>
  379. #    include <sys/wait.h>],
  380.         [int status;
  381.         u_int i = WEXITSTATUS(status);
  382.         u_int j = waitpid(0, &status, 0);],
  383.         ac_cv_lbl_union_wait=no,
  384.         ac_cv_lbl_union_wait=yes))
  385.     AC_MSG_RESULT($ac_cv_lbl_union_wait)
  386.     if test $ac_cv_lbl_union_wait = yes ; then
  387.         AC_DEFINE(DECLWAITSTATUS,union wait)
  388.     else
  389.         AC_DEFINE(DECLWAITSTATUS,int)
  390.     fi])
  391.  
  392. dnl
  393. dnl Checks to see if the sockaddr struct has the 4.4 BSD sa_len member
  394. dnl
  395. dnl usage:
  396. dnl
  397. dnl    AC_LBL_SOCKADDR_SA_LEN
  398. dnl
  399. dnl results:
  400. dnl
  401. dnl    HAVE_SOCKADDR_SA_LEN (defined)
  402. dnl
  403. AC_DEFUN(AC_LBL_SOCKADDR_SA_LEN,
  404.     [AC_MSG_CHECKING(if sockaddr struct has sa_len member)
  405.     AC_CACHE_VAL(ac_cv_lbl_sockaddr_has_sa_len,
  406.     AC_TRY_COMPILE([
  407. #    include <sys/types.h>
  408. #    include <sys/socket.h>],
  409.     [u_int i = sizeof(((struct sockaddr *)0)->sa_len)],
  410.     ac_cv_lbl_sockaddr_has_sa_len=yes,
  411.     ac_cv_lbl_sockaddr_has_sa_len=no))
  412.     AC_MSG_RESULT($ac_cv_lbl_sockaddr_has_sa_len)
  413.     if test $ac_cv_lbl_sockaddr_has_sa_len = yes ; then
  414.         AC_DEFINE(HAVE_SOCKADDR_SA_LEN)
  415.     fi])
  416.  
  417. dnl
  418. dnl Checks to see if -R is used
  419. dnl
  420. dnl usage:
  421. dnl
  422. dnl    AC_LBL_HAVE_RUN_PATH
  423. dnl
  424. dnl results:
  425. dnl
  426. dnl    ac_cv_lbl_have_run_path (yes or no)
  427. dnl
  428. AC_DEFUN(AC_LBL_HAVE_RUN_PATH,
  429.     [AC_MSG_CHECKING(for ${CC-cc} -R)
  430.     AC_CACHE_VAL(ac_cv_lbl_have_run_path,
  431.     [echo 'main(){}' > conftest.c
  432.     ${CC-cc} -o conftest conftest.c -R/a1/b2/c3 >conftest.out 2>&1
  433.     if test ! -s conftest.out ; then
  434.         ac_cv_lbl_have_run_path=yes
  435.     else
  436.         ac_cv_lbl_have_run_path=no
  437.     fi
  438.     rm -f conftest*])
  439.     AC_MSG_RESULT($ac_cv_lbl_have_run_path)
  440.     ])
  441.  
  442. dnl
  443. dnl Due to the stupid way it's implemented, AC_CHECK_TYPE is nearly useless.
  444. dnl
  445. dnl usage:
  446. dnl
  447. dnl    AC_LBL_CHECK_TYPE
  448. dnl
  449. dnl results:
  450. dnl
  451. dnl    int32_t (defined)
  452. dnl    u_int32_t (defined)
  453. dnl
  454. AC_DEFUN(AC_LBL_CHECK_TYPE,
  455.     [AC_MSG_CHECKING(for $1 using $CC)
  456.     AC_CACHE_VAL(ac_cv_lbl_have_$1,
  457.     AC_TRY_COMPILE([
  458. #    include "confdefs.h"
  459. #    include <sys/types.h>
  460. #    if STDC_HEADERS
  461. #    include <stdlib.h>
  462. #    include <stddef.h>
  463. #    endif],
  464.     [$1 i],
  465.     ac_cv_lbl_have_$1=yes,
  466.     ac_cv_lbl_have_$1=no))
  467.     AC_MSG_RESULT($ac_cv_lbl_have_$1)
  468.     if test $ac_cv_lbl_have_$1 = no ; then
  469.         AC_DEFINE($1, $2)
  470.     fi])
  471.  
  472. dnl
  473. dnl Checks to see if unaligned memory accesses fail
  474. dnl
  475. dnl usage:
  476. dnl
  477. dnl    AC_LBL_UNALIGNED_ACCESS
  478. dnl
  479. dnl results:
  480. dnl
  481. dnl    LBL_ALIGN (DEFINED)
  482. dnl
  483. AC_DEFUN(AC_LBL_UNALIGNED_ACCESS,
  484.     [AC_MSG_CHECKING(if unaligned accesses fail)
  485.     AC_CACHE_VAL(ac_cv_lbl_unaligned_fail,
  486.     [case "$target_cpu" in
  487.  
  488.     alpha|hp*|mips|sparc)
  489.         ac_cv_lbl_unaligned_fail=yes
  490.         ;;
  491.  
  492.     *)
  493.         cat >conftest.c <<EOF
  494. #        include <sys/types.h>
  495. #        include <sys/wait.h>
  496. #        include <stdio.h>
  497.         unsigned char a[[5]] = { 1, 2, 3, 4, 5 };
  498.         main() {
  499.         unsigned int i;
  500.         pid_t pid;
  501.         int status;
  502.         /* avoid "core dumped" message */
  503.         pid = fork();
  504.         if (pid <  0)
  505.             exit(2);
  506.         if (pid > 0) {
  507.             /* parent */
  508.             pid = waitpid(pid, &status, 0);
  509.             if (pid < 0)
  510.                 exit(3);
  511.             exit(!WIFEXITED(status));
  512.         }
  513.         /* child */
  514.         i = *(unsigned int *)&a[[1]];
  515.         printf("%d\n", i);
  516.         exit(0);
  517.         }
  518. EOF
  519.         ${CC-cc} -o conftest $CFLAGS $CPPFLAGS $LDFLAGS \
  520.             conftest.c $LIBS >/dev/null 2>&1
  521.         if test ! -x conftest ; then
  522.             dnl failed to compile for some reason
  523.             ac_cv_lbl_unaligned_fail=yes
  524.         else
  525.             ./conftest >conftest.out
  526.             if test ! -s conftest.out ; then
  527.                 ac_cv_lbl_unaligned_fail=yes
  528.             else
  529.                 ac_cv_lbl_unaligned_fail=no
  530.             fi
  531.         fi
  532.         rm -f conftest* core core.conftest
  533.         ;;
  534.     esac])
  535.     AC_MSG_RESULT($ac_cv_lbl_unaligned_fail)
  536.     if test $ac_cv_lbl_unaligned_fail = yes ; then
  537.         AC_DEFINE(LBL_ALIGN)
  538.     fi])
  539.  
  540. dnl
  541. dnl If using gcc and the file .devel exists:
  542. dnl    Compile with -g (if supported) and -Wall
  543. dnl    If using gcc 2, do extra prototype checking
  544. dnl    If an os prototype include exists, symlink os-proto.h to it
  545. dnl
  546. dnl usage:
  547. dnl
  548. dnl    AC_LBL_DEVEL(copt)
  549. dnl
  550. dnl results:
  551. dnl
  552. dnl    $1 (copt appended)
  553. dnl    HAVE_OS_PROTO_H (defined)
  554. dnl    os-proto.h (symlinked)
  555. dnl
  556. AC_DEFUN(AC_LBL_DEVEL,
  557.     [rm -f os-proto.h
  558.     if test "${LBL_CFLAGS+set}" = set; then
  559.         $1="$$1 ${LBL_CFLAGS}"
  560.     fi
  561.     if test -f .devel ; then
  562.         if test "$GCC" = yes ; then
  563.             if test "${LBL_CFLAGS+set}" != set; then
  564.                 if test "$ac_cv_prog_cc_g" = yes ; then
  565.                     $1="-g $$1"
  566.                 fi
  567.                 $1="$$1 -Wall"
  568.                 if test $ac_cv_lbl_gcc_vers -gt 1 ; then
  569.                     $1="$$1 -Wmissing-prototypes -Wstrict-prototypes"
  570.                 fi
  571.             fi
  572.         else
  573.             case "$target_os" in
  574.  
  575.             irix6*)
  576.                 V_CCOPT="$V_CCOPT -n32"
  577.                 ;;
  578.  
  579.             *)
  580.                 ;;
  581.             esac
  582.         fi
  583.         os=`echo $target_os | sed -e 's/\([[0-9]][[0-9]]*\)[[^0-9]].*$/\1/'`
  584.         name="lbl/os-$os.h"
  585.         if test -f $name ; then
  586.             ln -s $name os-proto.h
  587.             AC_DEFINE(HAVE_OS_PROTO_H)
  588.         else
  589.             AC_MSG_WARN(can't find $name)
  590.         fi
  591.     fi])
  592.  
  593. dnl
  594. dnl Improved version of AC_CHECK_LIB
  595. dnl
  596. dnl Thanks to John Hawkinson (jhawk@mit.edu)
  597. dnl
  598. dnl usage:
  599. dnl
  600. dnl    AC_LBL_CHECK_LIB(LIBRARY, FUNCTION [, ACTION-IF-FOUND [,
  601. dnl        ACTION-IF-NOT-FOUND [, OTHER-LIBRARIES]]])
  602. dnl
  603. dnl results:
  604. dnl
  605. dnl    LIBS
  606. dnl
  607.  
  608. define(AC_LBL_CHECK_LIB,
  609. [AC_MSG_CHECKING([for $2 in -l$1])
  610. dnl Use a cache variable name containing both the library and function name,
  611. dnl because the test really is for library $1 defining function $2, not
  612. dnl just for library $1.  Separate tests with the same $1 and different $2's
  613. dnl may have different results.
  614. ac_lib_var=`echo $1['_']$2['_']$5 | sed 'y%./+- %__p__%'`
  615. AC_CACHE_VAL(ac_cv_lbl_lib_$ac_lib_var,
  616. [ac_save_LIBS="$LIBS"
  617. LIBS="-l$1 $5 $LIBS"
  618. AC_TRY_LINK(dnl
  619. ifelse([$2], [main], , dnl Avoid conflicting decl of main.
  620. [/* Override any gcc2 internal prototype to avoid an error.  */
  621. ]ifelse(AC_LANG, CPLUSPLUS, [#ifdef __cplusplus
  622. extern "C"
  623. #endif
  624. ])dnl
  625. [/* We use char because int might match the return type of a gcc2
  626.     builtin and then its argument prototype would still apply.  */
  627. char $2();
  628. ]),
  629.         [$2()],
  630.         eval "ac_cv_lbl_lib_$ac_lib_var=yes",
  631.         eval "ac_cv_lbl_lib_$ac_lib_var=no")
  632. LIBS="$ac_save_LIBS"
  633. ])dnl
  634. if eval "test \"`echo '$ac_cv_lbl_lib_'$ac_lib_var`\" = yes"; then
  635.   AC_MSG_RESULT(yes)
  636.   ifelse([$3], ,
  637. [changequote(, )dnl
  638.   ac_tr_lib=HAVE_LIB`echo $1 | sed -e 's/[^a-zA-Z0-9_]/_/g' \
  639.     -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'`
  640. changequote([, ])dnl
  641.   AC_DEFINE_UNQUOTED($ac_tr_lib)
  642.   LIBS="-l$1 $LIBS"
  643. ], [$3])
  644. else
  645.   AC_MSG_RESULT(no)
  646. ifelse([$4], , , [$4
  647. ])dnl
  648. fi
  649. ])
  650.  
  651. dnl
  652. dnl AC_LBL_LIBRARY_NET
  653. dnl
  654. dnl This test is for network applications that need socket() and
  655. dnl gethostbyname() -ish functions.  Under Solaris, those applications
  656. dnl need to link with "-lsocket -lnsl".  Under IRIX, they need to link
  657. dnl with "-lnsl" but should *not* link with "-lsocket" because
  658. dnl libsocket.a breaks a number of things (for instance:
  659. dnl gethostbyname() under IRIX 5.2, and snoop sockets under most
  660. dnl versions of IRIX).
  661. dnl
  662. dnl Unfortunately, many application developers are not aware of this,
  663. dnl and mistakenly write tests that cause -lsocket to be used under
  664. dnl IRIX.  It is also easy to write tests that cause -lnsl to be used
  665. dnl under operating systems where neither are necessary (or useful),
  666. dnl such as SunOS 4.1.4, which uses -lnsl for TLI.
  667. dnl
  668. dnl This test exists so that every application developer does not test
  669. dnl this in a different, and subtly broken fashion.
  670.  
  671. dnl It has been argued that this test should be broken up into two
  672. dnl seperate tests, one for the resolver libraries, and one for the
  673. dnl libraries necessary for using Sockets API. Unfortunately, the two
  674. dnl are carefully intertwined and allowing the autoconf user to use
  675. dnl them independantly potentially results in unfortunate ordering
  676. dnl dependancies -- as such, such component macros would have to
  677. dnl carefully use indirection and be aware if the other components were
  678. dnl executed. Since other autoconf macros do not go to this trouble,
  679. dnl and almost no applications use sockets without the resolver, this
  680. dnl complexity has not been implemented.
  681. dnl
  682. dnl The check for libresolv is in case you are attempting to link
  683. dnl statically and happen to have a libresolv.a lying around (and no
  684. dnl libnsl.a).
  685. dnl
  686. AC_DEFUN(AC_LBL_LIBRARY_NET, [
  687.     # Most operating systems have gethostbyname() in the default searched
  688.     # libraries (i.e. libc):
  689.     AC_CHECK_FUNC(gethostbyname, ,
  690.     # Some OSes (eg. Solaris) place it in libnsl:
  691.     AC_LBL_CHECK_LIB(nsl, gethostbyname, , 
  692.         # Some strange OSes (SINIX) have it in libsocket:
  693.         AC_LBL_CHECK_LIB(socket, gethostbyname, ,
  694.         # Unfortunately libsocket sometimes depends on libnsl.
  695.         # AC_CHECK_LIB's API is essentially broken so the
  696.         # following ugliness is necessary:
  697.         AC_LBL_CHECK_LIB(socket, gethostbyname,
  698.             LIBS="-lsocket -lnsl $LIBS",
  699.             AC_CHECK_LIB(resolv, gethostbyname),
  700.             -lnsl))))
  701.     AC_CHECK_FUNC(socket, , AC_CHECK_LIB(socket, socket, ,
  702.     AC_LBL_CHECK_LIB(socket, socket, LIBS="-lsocket -lnsl $LIBS", ,
  703.         -lnsl)))
  704.     # DLPI needs putmsg under HPUX so test for -lstr while we're at it
  705.     AC_CHECK_LIB(str, putmsg)
  706.     ])
  707.